package com.smallA.service;

import com.smallA.po.Exam;
import com.smallA.po.Grade;
import com.smallA.vo.Result;
import com.smallA.vo.ResultTest;

import java.util.List;

/**
 * 学生对应的考试操作层
 */
public interface GradeService {

    /**
     * 通过学生的id来获取对应的考试表
     *
     * @param sid 学生id
     * @return 返回查询的集合
     */
    List<ResultTest> selectGradesById(Integer sid);

    /**
     * 学生报名参加一场考试
     *
     * @param sid 学生id
     * @param tid 测试id
     * @return 返回操作的成功与否
     */
    boolean insertGrade(Integer sid, Integer tid);

    /**
     * 让学生开始考试了
     *
     * @param gid 对应的考试表id
     * @return 返回是否开始考试
     */
    boolean BeginGrade(Integer gid);

    /**
     * 让学生结束考试
     *
     * @param gid 对应的考试id
     * @return 返回结束的成功与否
     */
    boolean EndGrade(Integer gid);

    /**
     * 通过成绩表的id来获取基本的成绩实现类
     *
     * @param gid 成绩表id
     * @return 返回成绩表实体类
     */
    Grade selectGradeById(Integer gid);

    /**
     * 通过考试id查询成绩表对象集合
     *
     * @param tid
     * @return
     */
    List<Grade> selectGradeByTestId(Integer tid);

    /**
     * 通过gid来获取剩余的考试时间
     *
     * @param gid
     * @return
     */
    Result<Integer> getEndTime(Integer gid);

    /**
     * 开始考试用接口
     *
     * @param tid 传入基本的考试id
     * @param uid 基本的学生id
     * @return
     */
    Result<Exam> beginTest(Integer tid, Integer uid);
}
